package com.javatoc.compress.toinvoke;

/**
 * 压缩视频传递的参数信息
 * 
 * @author liujun
 * @version 1.0.0
 * @since 2017年9月7日 上午11:14:24
 */
public class CompressBean {

	/**
	 * 工作实例句柄
	 */
	private int hndl;

	/**
	 * 输入媒体文件的全路径名称。
	 * 
	 * 压缩编码器自动识别输入文件的类型，一般常用的媒体文件类型均能够识别并正确解析。
	 */
	private String inFilename;

	/**
	 * 输出的媒体文件全路径名称。
	 * 
	 * 输出的媒体文件全路径名称。 压缩编码器自动识别文件的类型，一般常用的媒体文件类型均能够识别并正确打包。
	 */
	private String outFilename;

	/**
	 * 压缩后视频的码率。（单位： k）
	 * 
	 * 对于压缩视频的质量定义，本软件使用vbitrate和quality两个变量来定义，使用者可以依据自身的需要，选择使用。
	 * 如果定义中不希望使用码率来定义质量，那么可以将vbitrate设置为-1，则本变量失效，系统会检查quality变量的有效性。
	 * 
	 */
	private int vbitrate;

	/**
	 * 压缩后音频的码率。（单位： k）
	 * 
	 * abitrate设置为小于等于0的值，则变量失效，对于含有文件的音频部分，不做任何处理，直接以拷贝的形式转移到输出文件。
	 * 如果变量设置为有效值，则编码器使用aac编码器压缩音频至给定码率。
	 */
	private int abitrate;

	/**
	 * I帧间隔。
	 * 
	 * Keyint变量用于定义最小的I帧间隔，如果不使用该定义，则可以设置为小于0的数据，此时变量失效，系统会依据默认值运行。默认值：100
	 */
	private int keyint;

	/**
	 * 设置一个GOP中最大B帧数量。
	 * 
	 * 定义为小于等于0的数值，则该变量失效。系统会依据圧缩过程的实际情况，决定B帧的使用
	 * 
	 */
	private int bframes;

	/**
	 * 视频压缩编码质量定义。
	 * 
	 * quality和vbitrate共同定义视频编码质量和压缩率，在vbitrate无效的情况下，使用quality约束压缩质量，
	 * quality参数数值越小压缩比越小，数值越大压缩比越大。 同样的，当quality小于等于0时，quality参数失效，系统会以默认参数运行。
	 * 建议quality不小于20，不大于40。
	 */
	private float quality;

	/**
	 * 定义压缩后视频的宽度
	 * 
	 * 设置为小于等于0的数据，变量失效，视频保持原有的宽度。
	 */
	private int width;

	/**
	 * 定义压缩后视频的高度 设置为小于等于0的数据，
	 * 
	 * 变量失效，视频保持原有的高度。 width和height变量只要有一个处于失效状态，则压缩后视频保持原有的尺寸。
	 */
	private int height;

	/**
	 * 压缩后视频的帧率设置
	 * 
	 * 设置为小于等于0的数据，变量失效。压缩后视频保持原有的帧率。
	 * 
	 */
	private int fps;

	public int getHndl() {
		return hndl;
	}

	public void setHndl(int hndl) {
		this.hndl = hndl;
	}

	public String getInFilename() {
		return inFilename;
	}

	public void setInFilename(String inFilename) {
		this.inFilename = inFilename;
	}

	public String getOutFilename() {
		return outFilename;
	}

	public void setOutFilename(String outFilename) {
		this.outFilename = outFilename;
	}

	public int getVbitrate() {
		return vbitrate;
	}

	public void setVbitrate(int vbitrate) {
		this.vbitrate = vbitrate;
	}

	public int getAbitrate() {
		return abitrate;
	}

	public void setAbitrate(int abitrate) {
		this.abitrate = abitrate;
	}

	public int getKeyint() {
		return keyint;
	}

	public void setKeyint(int keyint) {
		this.keyint = keyint;
	}

	public int getBframes() {
		return bframes;
	}

	public void setBframes(int bframes) {
		this.bframes = bframes;
	}

	public float getQuality() {
		return quality;
	}

	public void setQuality(float quality) {
		this.quality = quality;
	}

	public int getWidth() {
		return width;
	}

	public void setWidth(int width) {
		this.width = width;
	}

	public int getHeight() {
		return height;
	}

	public void setHeight(int height) {
		this.height = height;
	}

	public int getFps() {
		return fps;
	}

	public void setFps(int fps) {
		this.fps = fps;
	}

	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		builder.append("CompressBean [hndl=");
		builder.append(hndl);
		builder.append(", inFilename=");
		builder.append(inFilename);
		builder.append(", outFilename=");
		builder.append(outFilename);
		builder.append(", vbitrate=");
		builder.append(vbitrate);
		builder.append(", abitrate=");
		builder.append(abitrate);
		builder.append(", keyint=");
		builder.append(keyint);
		builder.append(", bframes=");
		builder.append(bframes);
		builder.append(", quality=");
		builder.append(quality);
		builder.append(", width=");
		builder.append(width);
		builder.append(", height=");
		builder.append(height);
		builder.append(", fps=");
		builder.append(fps);
		builder.append("]");
		return builder.toString();
	}

}
